//028. 数字螺旋的对角线
//        从 1 开始按顺时针方向向右移动并加一，形成的五乘五的数字螺旋如下：
//        可以验证对角线上的红色数字之和为 101。
//        对于一个 1001 乘以 1001 的同样的数字螺旋，其对角线上的值的和是多少？
//        答案：669171001


public class Week028 {
    static final int N = 1001;

    // method1: 找规律
    // 第n圈对角线的数字间相差 2n
    static void run() {
        if ((N & 1) == 0) {
            System.out.println("ERROR");
            return;
        }
        long ans = 1;
        int cur = 1;
        int n = N >> 1;
        //枚举圈数
        for (int i = 1, k = 2; i <= n; ++i, k += 2) {
            for (int j = 0; j < 4; ++j) {
                cur += k;
                ans += cur;
            }
        }
        System.out.println(ans);
    }

    // method2: 推柿子
    // n为圈数
    // ans(n)= 8n(n+1)(2n+1)/3 + 2n(n+1) + 4n + 1;
//    static void run() {
//        long n = N >> 1;
//        System.out.println(8l * n * (n + 1l) * (n << 1 | 1l) / 3l + (n << 1) * (n + 1l) + 4l * n + 1l);
//    }

    public static void main(String[] args) {
        long startTime = System.nanoTime();
        run();
        System.out.println("\n程序运行时间：" + (System.nanoTime() - startTime) + "ns.");
    }
}
